home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / boot tools / waitvalidation / waitvalidation.e < prev    next >
Text File  |  1996-04-07  |  2KB  |  85 lines

  1. OPT PREPROCESS
  2.  
  3. ->/////////////////////////////////////////////////////////////////////////////
  4.  
  5. MODULE 'dos/dos' , 'dos/dosextens'
  6.  
  7. ->/////////////////////////////////////////////////////////////////////////////
  8.  
  9. ->#define DEBUG13
  10.  
  11. #ifdef DEBUG13
  12.     #define KICK20 FALSE
  13. #endif
  14. #ifndef DEBUG13
  15.     #define KICK20 KickVersion( 36 )
  16. #endif
  17.  
  18. ->/////////////////////////////////////////////////////////////////////////////
  19.  
  20. PROC main()
  21.  
  22.     DEF db : PTR TO doslibrary , dl : PTR TO doslist , di : PTR TO dosinfo , dl13
  23.     DEF ldevs = NIL : PTR TO LONG , conv_ptr : PTR TO CHAR , devname
  24.     DEF id : PTR TO infodata
  25.  
  26.     ->/////////////////////////////////////////////////////////////////////////
  27.  
  28.     IF KICK20
  29.         dl := LockDosList( LDF_DEVICES OR LDF_READ )
  30.     ELSE
  31.         Forbid()
  32.         db := dosbase
  33.         di := BADDR( db.root.info )
  34.         dl13 := di.devinfo
  35.         dl := {dl13}
  36.     ENDIF
  37.  
  38.     WHILE ( IF KICK20    THEN dl := NextDosEntry( dl , LDF_DEVICES )
  39.                         ELSE dl := myNextDosEntry( dl , DLT_DEVICE ) )
  40.         IF dl.task
  41.             ldevs := Link( List( 2 ) , ldevs )
  42.             ldevs[] :=  dl.task
  43.             ldevs[1] := dl.name
  44.         ENDIF
  45.     ENDWHILE
  46.  
  47.     IF KICK20
  48.         UnLockDosList( LDF_DEVICES OR LDF_READ )
  49.     ELSE
  50.         Permit()
  51.     ENDIF
  52.  
  53.     ->/////////////////////////////////////////////////////////////////////////
  54.  
  55.     id := New( ( SIZEOF infodata ) + 4 )
  56.     id := ( id + 4 ) AND $FFFFFFFC
  57.  
  58.     WHILE ldevs
  59.         DoPkt( ldevs[] , ACTION_DISK_INFO , MKBADDR( id ) , NIL , NIL , NIL , NIL )
  60.         IF id.diskstate = ID_VALIDATING
  61.             conv_ptr := Shl( ldevs[ 1 ] , 2 )
  62.             StrCopy( devname := String( conv_ptr[] + 1 ) , conv_ptr + 1 , conv_ptr[] )
  63.             PrintF( '\s: is validating !\nWaiting' , devname )
  64.             WHILE ( id.diskstate = ID_VALIDATING )
  65.                 Delay( 2 * 50 )
  66.                 DoPkt( ldevs[] , ACTION_DISK_INFO , MKBADDR( id ) , NIL , NIL , NIL , NIL )
  67.                 PutStr( '.' )
  68.             ENDWHILE
  69.             PrintF( '\nValidation of \s: is terminated.\n\n' , devname )
  70.         ENDIF
  71.         ldevs := Next( ldevs )
  72.     ENDWHILE
  73.  
  74. ENDPROC
  75.  
  76. ->/////////////////////////////////////////////////////////////////////////////
  77.  
  78. PROC myNextDosEntry( dl : PTR TO doslist , type )
  79.     WHILE ( dl := BADDR( dl.next ) ) DO EXIT ( dl.type = type )
  80. ENDPROC dl
  81.  
  82. ->/////////////////////////////////////////////////////////////////////////////
  83.  
  84. CHAR '$VER: WaitValidation 1.0 (16.12.95)'
  85.